import java.util.*;
/**
 * Write a description of class SubmenuAdmin here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class SubmenuAdmin
{
    private MenuKiezer menu;
    private Manager manager;
    private AanbiedingMenu aanbiedingMenu;
    private Supermarkt supermarkt;

    public SubmenuAdmin(Manager manager){
        maakAdminSubmenu();
        this.manager=manager;
        supermarkt = manager.getSupermarkt();
    }

    private void maakAdminSubmenu() {
        menu = new MenuKiezer( "Welkom in het Adminmenu", "maak een keuze"          );
        menu.addItem    ( "Zoek op klant"                                     );
        menu.addItem    ( "Voeg product aan assortiment toe "                 );
        menu.addItem    ( "Verwijder product"                                 );
        menu.addItem    ( "Voeg nieuwe afdeling toe"                          );
        menu.addItem    ( "Verwijder afdeling"                                );
        menu.addItem    ( "Vraag gegevens klant op"                           );
        menu.addItem    ( "Vraag product Winkel op"                           );
        menu.addItem    ( "Verander de verkoopprijs van een product"          );
        menu.addItem    ( "Verander de inkoopprijs van een product"           );
        menu.addItem    ( "Bestel product"                                    );
        menu.addItem    ( "Leg product vanuit magazijn in schappen"           );
        menu.addItem    ( "Stel aanbiedingen in"                              );
        menu.addItem    ( "Bekijk verkoopgegevens per periode"                );
        menu.addItem    ( "Vraag omzet en winst op"                           );
        menu.addItem    ( "Bekijk en verander vaste lasten"                   );
        menu.addItem    ( "Bekijk de afschriften"                             );
        menu.addItem    ( "Bekijk de product statistieken"                    );
        menu.addItem    ( "Schrijf verkoopgegevens weg  "                     );
        menu.addStopItem( "Stoppen"                                           );
        
    }
    
    public void toonAdminSubmenu() {
        this.manager=manager;
        int keuze = -1;
        TuiHelper.clear();
        while ( keuze != 0 ) {
            keuze = menu.getMenukeuze();
            switch ( keuze ) {
            case 18: clear();   verkoopGegevensWegschrijven();  break;
            case 17: clear();    productVerkoopStatistieken();  break;
            case 16: clear();    adminBonnenPerPeriode();       break;
            case 15: clear();    vasteLastenSysteem();          break;
            case 14: clear();    vraagOmzetWinst();             break;
            case 13: clear();    verkoopGegevens();             break;
            case 12: clear();    toonAanbiedingMenu();          break;
            case 11: clear();    legProductInSchap();           break;
            case 10: clear();    bestelProductAfdeling();       break;
            case 9:  clear();    veranderInkoopPrijsProduct();  break;
            case 8:  clear();    veranderVerkoopPrijsProduct(); break;
            case 7:  clear();    vraagProductWinkelOp();        break;
            case 6:  clear();    vraagGegevensKlanten();        break;
            case 5:  clear();    verwijderAfdeling();           break;
            case 4:  clear();    addAfdeling();                 break;
            case 3:  clear();    verwijderProduct();            break;
            case 2:  clear();    voegProductToe();              break;    
            case 1:  clear();    zoekOpKlant();                 break;  
            case 0:  TuiHelper.clear();                          break;
            default:
                    System.out.println("Ongeldige keuze");
            }
        }
    }
    
    public void zoekOpKlant( ){
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de klant naam in: " );
        manager.vraagGegevensKlant(naam);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    //vaste lasten gedoe\\
    public void vasteLastenSysteem(){
        TuiHelper.clear();
        String s = "De vaste lasten bedragen: ";
        s += String.format("%.2f", manager.getVasteLasten() );
        s += "EUR per maand\n\n";
        String antwoord = TuiHelper.stelVraagMetTekstAntwoord( "Druk op 'V' om te veranderen of druk op 'T' om terug te gaan", s);
        if(antwoord.equals("v") ){
            double bedrag = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier het bedrag van de vaste lasten in: ", "", 0.0, 100000.0 );
            manager.setVasteLasten(bedrag);
        }
        else{
            TuiHelper.clear();
        }
    }
    
    public void addAfdeling(){
        TuiHelper.clear();
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de Afdeling naam in: " );
        manager.addAfdeling(naam);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void verwijderAfdeling(){
        TuiHelper.clear();
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de Afdeling naam in: " );
        manager.verwijderAfdeling(naam);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void vraagOmzetWinst(){
        TuiHelper.clear();
        String s = "\n Omzet: "; 
        s += String.format("%.2f", manager.getOmzet() );
        s += "EUR \n Kosten: ";
        s += String.format("%.2f", manager.getKosten() );
        s += "EUR, \n Winst: ";
        s += String.format("%.2f", manager.getWinst());
        s += "EUR, \n Balans: ";
        s += String.format("%.2f", (manager.getGeld() + manager.getWinst()));
        s += "EUR";
        System.out.println(s);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void verkoopGegevens(){
        int dag = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke dag wilt u de gegevens inzien ","", 0,31);
        int maand = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaar = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum begindatum = new Datum( dag, maand , jaar);
        TuiHelper.clear();
        
        int dagtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke dag wilt u de gegevens inzien ","", 0,31);
        int maandtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaartot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum einddatum = new Datum(dagtot, maandtot, jaartot);
        
        TuiHelper.clear();
        System.out.println("Periode van: " + begindatum.toString() + " tot " + einddatum.toString() );
        manager.verkoopGegevensPerPeriode(begindatum, einddatum);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void adminBonnenPerPeriode(){
        int dag = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke dag wilt u de gegevens inzien ","", 0,31);
        int maand = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaar = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum begindatum = new Datum( dag, maand , jaar);
        TuiHelper.clear();
        
        int dagtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke dag wilt u de gegevens inzien ","", 0,31);
        int maandtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaartot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum einddatum = new Datum(dagtot, maandtot, jaartot);
        
        TuiHelper.clear();
        System.out.println("Periode van: " + begindatum.toString() + " tot " + einddatum.toString() );
        manager.adminBonnenPerPeriode(begindatum, einddatum);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void productVerkoopStatistieken(){
        int dag = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke dag wilt u de gegevens inzien ","", 0,31);
        int maand = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaar = TuiHelper.stelVraagMetGetalAntwoord( "Vanaf welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum begindatum = new Datum( dag, maand , jaar);
        TuiHelper.clear();
        
        int dagtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke dag wilt u de gegevens inzien ","", 0,31);
        int maandtot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke maand wilt u de gegevens inzien   ","", 0,12);
        int jaartot = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke jaar wilt u de gegevens inzien  ","", 0,2099);
        
        Datum einddatum = new Datum(dagtot, maandtot, jaartot);
        
        TuiHelper.clear();
        System.out.println("Periode van: " + begindatum.toString() + " tot " + einddatum.toString() );
        manager.productVerkoopStatistieken(begindatum, einddatum);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void voegProductToe(){
        boolean bestaat = false;
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de product naam in: " );
        for(Product product: supermarkt.getProducten() ){
            if(product.getNaam().equalsIgnoreCase(naam) ){
                bestaat = true;
            } 
        }
        if ( !bestaat ){
            double inkoopPrijs = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de inkoopprijs in: ","",0.00,100.00 );
            double verkoopPrijs = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de verkoopprijs in: ","",0.00,100.00 );
            int voorraadMagazijn = TuiHelper.stelVraagMetGetalAntwoord( "Hoeveel wilt u bestellen: ","", 1,100);
            int dag = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke dag is het houdbaar ","", 0,31);
            int maand = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke maand is het houdbaar  ","", 0,12);
            int jaar = TuiHelper.stelVraagMetGetalAntwoord( "Tot welk jaar is het houdbaar  ","", 0,2099);
                    
            String afdeling = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de afdelingsnaam in: " );
            TuiHelper.clear();
            Datum houdbaarheidsDatum = new Datum(dag, maand, jaar);
        
            manager.addNieuwProduct(naam, inkoopPrijs, verkoopPrijs, voorraadMagazijn, houdbaarheidsDatum, afdeling);
            TuiHelper.drukafDrukEnterEnWachtOpEnter();   
        }
        else{
            System.out.println("Het product bestaat al ");
            TuiHelper.drukafDrukEnterEnWachtOpEnter();
        }
    }
    
    public void verwijderProduct(){
        TuiHelper.clear();
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de productnaam in: " );
        manager.verwijderProduct(naam);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void vraagGegevensKlanten(){
        TuiHelper.clear();
        System.out.println("Klant gegevens: ");
        manager.vraagGegevensKlanten();
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void vraagProductWinkelOp(){
        String naam = TuiHelper.stelVraagMetTekstAntwoord( "Vul hier de product naam in: " );
        manager.vraagProductOpWinkel(naam);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }

    
    public void veranderVerkoopPrijsProduct(){
        BestelMenu bestelMenu = new BestelMenu(manager, "prijsverkoop");
        bestelMenu.toonAfdelingMenu();
        
    }
    
    public void veranderInkoopPrijsProduct(){
        BestelMenu bestelMenu = new BestelMenu(manager, "prijsinkoop");
        bestelMenu.toonAfdelingMenu();
        
    }
    
    public void bestelProductAfdeling(){
        BestelMenu bestelMenu = new BestelMenu(manager, "bestellen");
        bestelMenu.toonAfdelingMenu();
    }
    
    public void legProductInSchap(){
        BestelMenu bestelMenu = new BestelMenu(manager, "schappen");
        bestelMenu.toonAfdelingMenu();
    }
        
    
    public void toonAanbiedingMenu(){
        aanbiedingMenu = new AanbiedingMenu(manager);
        aanbiedingMenu.toonAanbiedingMenu();
    }
    
    public void verkoopGegevensWegschrijven(){
        manager.verkoopGegevensWegschrijven();
    }
    
    public void clear(){
        TuiHelper.clear();
    }
}
